All computers and many electronic devices include non-volatile memory for storing a boot code also sometimes referred to as the BIOS (i.e., basic input/output system). The boot code or BIOS enables the device to “boot,” setting up basic processes so that the device may, among other things, interact with various peripherals such as a keyboard, etc. Early versions of non-volatile memory included one-time-programmable (OTP) ROM, which was eventually replaced by EPROM (Erasable Programmable Read Only Memory). EPROM memory required exposure to ultra-violet light in order to erase the “burned-in” code and render it programmable. Today, EPROM has been superceded by EEPROM (Electrically Erasable Programmable Read Only Memory), which includes the recent “flash” memory included in many electronic devices and also in memory sticks useful for storing personal data.
Flash memory allowed for upgrading software by performing a flash operation on the memory as illustrated in the example of FIG. 1. FIG. 1 shows a circuit board 100 that includes a programming port 101 and a programming connector 103. The programming connector 103 is provided to connect an external cable, such as ribbon cable 107, directly to the circuit board 100 such that an “in-situe” programming device 105 may be interfaced. The in-situe programming device 105 may also include a separate cable 109 for connection to a computer system 111, or other device, related to the programming operation.
In some configurations, a special clamp connector is used that allows connection directly to the boot ROM 121 pins. For configurations such as that exemplified in FIG. 1, the programming port is connected, via internal routing 113, to the memory subsystem 119 and the boot ROM 121. Other connections may also be present, such as routing connection 115 enabling interface with the Central Processing Unit (CPU) 117. Via the connections illustrated in FIG. 1, the in-situe programming device 105 may reprogram, or “flash,” the boot ROM 121 with a new or upgraded boot code or BIOS code.
The circuit board 100 may include a peripheral controller 201 as shown in FIG. 2. The peripheral controller usually includes support for various interfaces and devices, and usually includes a flash memory controller 207 for interfacing with the boot ROM 121 of the memory subsystem 119. Various other support may be present in the peripheral controller 201, such as, for example, Universal Serial Bus (USB) logic 203. The USB logic 203 supports one or more USB connectors 205 which allow access to various components of the circuit board 100 in addition to the memory subsystem 119 and the CPU 117. The peripheral controller 201 may include the programming port 101, however, as discussed above, the boot ROM 121 may also be accessed by a clamp connector that connects directly to the pins of the boot ROM package.
Universal Serial Bus (USB) devices exist that may be connected to an electronic device such as a mobile telephone, and that may be used for “unlocking” the mobile phone. Unlocking involves changing a numeric network identifier that is hidden within application layer software in order to allow the mobile telephone access to various networks. Therefore, while these USB devices may also allow changing software at the application level, they do not provide serial programmer functionality as does an in-situe programming device 105 as illustrated in FIG. 1.
As computing devices have become smaller and more integrated in terms of components, access to the boot ROM, and any internal circuit boards containing the boot ROM, has become difficult or even impossible without complete disassembly of the device. This therefore makes upgrading the BIOS, or any other software contained in non-volatile memory, difficult as well.
Therefore a need exists for upgrade apparatuses and methods that do not require specialized connectors, and that do not require direct access to a circuit board where a device must be opened or disassembled.